// #include <iostream>
// using namespace std;
//
// int main() {
//     int n;
//     while (cin >> n) {
//         if (n == 0) {
//             break;
//         }
//         long long sum = 0;
//         int day = 0;
//         while (sum < n) {
//             day++;
//             sum += (long long)day*day;
//         }
//         cout<<day<<endl;
//     }
//     return 0;
// }

//以二分法为核心优化，先提前遍历存储，再输入判断，引用lower_bound函数查找接近的苹果数，最后输出下标，即i天
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

const ll MAXN=1e18+5;

void solve() {
    vector<ll> pre(1);
    for (ll i = 1;;i++) {
        ll v = pre[i-1] + i*i;  //Sn = Sn-1 + an 前缀和
        pre.push_back(v);   //以尾插的方式把遍历的可能的i^2值放进容器
        if (pre.back() > MAXN)  break;
    }
    ll input;
    while (1) {
        cin>>input;
        if (input == 0) break;
        ll ans = lower_bound(pre.begin(), pre.end(), input)-pre.begin();
        cout<<ans<<endl;
    }
}

int main() {
    ios::sync_with_stdio(false);
    solve();
    return 0;
}
